home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
TPUG - Toronto PET Users Group
/
TPUG Users Group CD
/
TPUG Users Group CD.iso
/
COMAL
/
U-User Group
/
(k)u3.d64
/
nec8023 scrndump
< prev
next >
Wrap
Text File
|
2007-02-28
|
7KB
|
201 lines
9000 // LIST "@0:NEC8023 SCRNDUMP"
9001 //
9002 // ░└└└└└└└└└└└└└└└└└└└«
9003 // ░└└└│NEC8023 SCREEN DUMP½└└└«
9004 // ▌ ¡└└└└└└└└└└└└└└└└└└└╜ ▌
9005 // ▌ BY: T.B.H.KUIPER 1984 ▌
9006 // ▌ MODIFIED BY HARRY SEIDMAN ▌
9007 // ½└└└└└└└└└└└└└└└└└└└└└└└└└└└│
9008 // ▌ THIS PROGRAM DUMPS THE ▌
9009 // ▌ HIGH RESOLUTION BIT MAP ▌
9010 // ▌ TO THE LINE PRINTER. 8 BIT▌
9011 // ▌ ░└└└└└└└└└└└└└└└« ▌
9012 // ½└└└└└│EXAMPLE OF USE:½└└└└└│
9013 // ▌ ¡└└└└└└└└└└└└└└└╜ ▌
9014 // ▌ YOU CAN MERGE THIS PROGRAM▌
9015 // ▌ WITH YOUR OWN. WHEN YOU ▌
9016 // ▌ WANT A SCREEN DUMP, CALL ▌
9017 // ▌ THE PROC "NEC'SCREENDUMP" ▌
9018 // ▌ TO PRINT A PICTURE OF THE ▌
9019 // ▌ CURRENT HI-RES SCREEN. ▌
9020 // ▌ THIS SYSTEM IS NOW SET UP ▌
9021 // ▌ TO BE USED WITH THE CARDCO▌
9022 // ▌ MODEL "A" OR OTHER "DUMB" ▌
9023 // ▌ PRINTER INTERFACE. ▌
9024 // ▌ ▌
9025 // ▌ ▌
9026 // ▌ ▌
9027 // ▌ ▌
9028 // ▌ ▌
9029 // ▌ ▌
9030 // ¡└└└└└└└└└└└└└└└└└└└└└└└└└└└╜
9031 //
9032 PROC NEC'DUMP
9033 PRINT CHR$(142)
9034 PRINT "ôPLEASE WAIT, I'M WORKING."
9035 DIM HSBIT(256)
9036 MIRRORBIT(HSBIT)
9037 READ'HIDDEN'RAM'SETUP
9038 BIT'MAP'PRINT(HSBIT)
9039 END
9040 ENDPROC NEC'DUMP
9041 //
9042 PROC BIT'MAP'PRINT(REF HSBIT()) CLOSED
9043 PRINT CHR$(147)
9044 DIM YN$ OF 1
9045 INPUT "DO YOU WANT TO REVERSE THE IMAGE ? N¥": YN$
9046 CASE YN$ OF
9047 WHEN "N","╬"
9048 HSMASK:=0
9049 OTHERWISE
9050 HSMASK:=255
9051 ENDCASE
9052 BIT'MAP:=57344
9053 NUM'DOTS:=200 //VERTICAL SCREEN RESOLUTION
9054 NUM'DOTS'HI:=INT(NUM'DOTS/256)
9055 NUM'DOTS'LO:=NUM'DOTS-256*NUM'DOTS'HI
9056 DIM OUT$ OF NUM'DOTS+6
9057 SELECT OUTPUT "LP:"
9058 SKIP'LINES(20) // CENTER PLOT ON PAGE
9059 //
9060 PRINT CHR$(27)+"T16"+CHR$(27)+">" // LINE FEED TO 16/144 INCH
9061 FOR COLUMN:=0 TO 39 DO
9062 OUT$:=CHR$(27)+"S0200" // CLEAR PREVIOUS LINE FROM OUTPUT STRING
9063 FOR II#:=1 TO NUM'DOTS-176 DO // PUT IN LEADING BLANKS...
9064 OUT$:=OUT$+CHR$(0) // ...TO MOVE THE BIT-MAP...
9065 ENDFOR II# // .. .IMAGE OFF THE PAPER MARGIN
9066 OUT$:=OUT$+CHR$(0)+CHR$(0)
9067 FOR ROW:=24 TO 0 STEP -1 DO // PUT ALL THE 'CHARACTERS' FROM THE ...
9068 CHAR'ADDR:=BIT'MAP+8*(COLUMN+40*ROW) // ...CURRENT COLUMN INTO THE ...
9069 GET'BYTES(CHAR'ADDR,OUT$,HSBIT,HSMASK) // ... OUTPUT STRING
9070 ENDFOR ROW
9071 PRINT OUT$ // PRINT THE COLUMN
9072 ENDFOR COLUMN
9073 OUT$:=""
9074 PRINT OUT$
9075 SKIP'LINES(20) // MOVE TO NEXT PAGE
9076 SELECT OUTPUT "DS:"
9077 ENDPROC BIT'MAP'PRINT
9078 //
9079 PROC SKIP'LINES(N) CLOSED
9080 FOR I:=1 TO N DO
9081 PRINT CHR$(10),
9082 ENDFOR I
9083 ENDPROC SKIP'LINES
9084 //
9085 PROC READ'HIDDEN'RAM'SETUP
9086 // TO READ HIDDEN RAM:
9087 // SET UP MACHINE CODE BY CALLING THIS PROCEDURE,
9088 // POKE ADDRESS TO READ INTO 842 (LOW BYTE) AND 843 (HIGH BYTE),
9089 // SYS 829, AND
9090 // PEEK CONTENTS FROM 855.
9091 //
9092 // 828 TEMPORARY STORAGE FOR MEMORY CONTROL REGISTER
9093 POKE 829,173 // LDA... (SAVE...
9094 POKE 830,1 // ...1 + (...THE...
9095 POKE 831,0 // ...0*256 (=1) (...MEMORY...
9096 POKE 832,141 // STA... (...CONTROL...
9097 POKE 833,60 // ...60 + (...SETTING
9098 POKE 834,3 // ...3*256 (=828)
9099 POKE 835,120 // SEI (DISABLE INTERRUPTS
9100 POKE 836,73 // EOR... (REVERSE...
9101 POKE 837,7 // ...$7 (...THE...
9102 POKE 838,141 // STA... (...MEMORY...
9103 POKE 839,1 // ... (...CONTROL...
9104 POKE 840,0 // ...(=1) (...SETTING
9105 POKE 841,173 // LDA...
9106 // 842 ...LOW BYTE OF ADDRESS TO READ
9107 // 843 ...HIGH BYTE OF ADDRESS TO READ
9108 POKE 844,141 // STA... (FETCH...
9109 POKE 845,87 // ...87 + (...DESIGNATED...
9110 POKE 846,3 // ...3*256 (=855) (..BYTE
9111 POKE 847,173 // LDA... (RESTORE...
9112 POKE 848,60 // ... (...THE...
9113 POKE 849,3 // ...(=828) (...MEMORY...
9114 POKE 850,141 // STA... (...CONTROL...
9115 POKE 851,1 // ... (...SETTING
9116 POKE 852,0 // ...(=1)
9117 POKE 853,88 // CLI (ENABLE INTERRUPTS
9118 POKE 854,96 // RTS
9119 // 855 CONTAINS RETRIEVED BYTE
9120 ENDPROC READ'HIDDEN'RAM'SETUP
9121 //
9122 PROC GET'BYTES(CHAR'ADDR,REF OUT$,REF HSBIT(),HSMASK) CLOSED
9123 // GET THE EIGHT BYTES OF A 'CHARACTER' FROM CHARACTER ROM OR BIT MAP ...
9124 // ... AND APPEND TO 'OUT$'.
9125 FOR BYTE#:=7 TO 0 STEP -1 DO
9126 BYTE'ADDR:=BYTE#+CHAR'ADDR
9127 HIGH'BYTE#:=INT(BYTE'ADDR/256)
9128 LOW'BYTE#:=BYTE'ADDR-256*HIGH'BYTE#
9129 POKE 842,LOW'BYTE#
9130 POKE 843,HIGH'BYTE#
9131 SYS 829
9132 BITVAL:=XOR(PEEK(855),HSMASK)+1
9133 BITVAL:=HSBIT(BITVAL)
9134 OUT$:=OUT$+CHR$(BITVAL)
9135 ENDFOR BYTE#
9136 ENDPROC GET'BYTES
9137 //
9138 FUNC SCREEN'CODE(ASCII$) CLOSED //RETURN SCREEN CODE VALUE OF CHARACTER
9139 AS:=ORD(ASCII$)
9140 RETURN LAND(AS,128)/2+LAND(AS,63)
9141 ENDFUNC SCREEN'CODE
9142 //
9143 FUNC LOGICAL'SET'UP(NUM,MASK,OP) CLOSED
9144 //
9145 // SET UP MACHINE CODE TO RESIDE
9146 // BETWEEN THE SCREEN AND THE
9147 // SPRITE POINTERS.
9148 //
9149 POKE 2024,169
9150 POKE 2025,NUM
9151 POKE 2026,OP
9152 POKE 2027,MASK
9153 POKE 2028,141
9154 POKE 2029,240
9155 POKE 2030,7
9156 POKE 2031,96
9157 SYS 2024
9158 RETURN PEEK(2032)
9159 ENDFUNC LOGICAL'SET'UP
9160 //
9161 FUNC LAND(NUM,MASK) CLOSED
9162 RETURN LOGICAL'SET'UP(NUM,MASK,41)
9163 ENDFUNC LAND
9164 //
9165 FUNC LOR(NUM,MASK) CLOSED
9166 RETURN LOGICAL'SET'UP(NUM,MASK,9)
9167 ENDFUNC LOR
9168 //
9169 FUNC XOR(NUM,MASK) CLOSED
9170 RETURN LOGICAL'SET'UP(NUM,MASK,73)
9171 ENDFUNC XOR
9172 END
9173 PROC MIRRORBIT(REF VAL()) CLOSED
9174 // THE PROWRITER NEED THE MIRROR IMAGE OF THE BIT PATTERN TO WORK PROPERLY
9175 // (I.E. 11000000 BECOMES 00000011)
9176 // THIS ROUTINE SETS UP AN ARRAY THAT ALLOWS THIS TO HAPPEN
9177 ZONE 10
9178 I:=0
9179 FOR I1:=0 TO 1 DO
9180 FOR I2:=0 TO 1 DO
9181 FOR I3:=0 TO 1 DO
9182 FOR I4:=0 TO 1 DO
9183 FOR I5:=0 TO 1 DO
9184 FOR I6:=0 TO 1 DO
9185 FOR I7:=0 TO 1 DO
9186 FOR I8:=0 TO 1 DO
9187 IHS:=I8*128+I7*64+I6*32+I5*16+I4*8+I3*4+I2*2+I1
9188 I:=I+1
9189 VAL(I):=IHS
9190 //PRINT I,IHS
9191 ENDFOR I8
9192 ENDFOR I7
9193 ENDFOR I6
9194 ENDFOR I5
9195 ENDFOR I4
9196 ENDFOR I3
9197 ENDFOR I2
9198 ENDFOR I1
9199 ENDPROC MIRRORBIT